/*
  ；类的静态属性、静态方法、多态、抽象类
*/

/*
  ES5 类（构造函数）的静态属性和静态方法的使用
    静态方法不能访问到实例属性的和实例的方法的 静态方法只能访问到静态属性

    function show(name) {
      this.name = name
      getName = function () {
        console.log(this.name)
      }
    }

    show.aka = 20
    show.test = function () {
      console.log(show.aka)
    }
*/

// ts中的静态属性，和静态方法
class myQuery {
  static version: string = 'V1.0.0'
  public name = 'extend jQuery'
  showName() {
    // return this.version  会报错 实例方法也没有办法访问到静态属性
    // return myQuery.version  // 不报错
    // return this.version
    /*
      报错 因为实例化之后这个this表示的是实例化之后的对象  
        实例对象只能访问实例属性和方法
    */
    return this.name
  }
  static updateVersion(version: string) {
    myQuery.version = version
    console.log(myQuery.version)
  }
}
let jimmyQuery = new myQuery()
console.log(jimmyQuery.showName()) // extend jQuery
myQuery.updateVersion('V2.0.0') // V2.0.0

/*
  以上便是静态属性和静态方法的使用，也是复习 之前都用过
*/
